import java.util.Calendar;
import java.util.Iterator;

public class Granero {
	private String cod;
	private String nombre;

	public EscribirDatos b = new EscribirDatos();

	public ListaArticulo listaArticulos = new ListaArticulo();
	public ListaCategoria listaCategorias = new ListaCategoria();
	public ListaVenta listaVentas = new ListaVenta();

	Granero(String cod, String nombre) {
		this.cod = cod;
		this.nombre = nombre;

		// iba en el main
		listaArticulos.leerDatos();
		// listaArticulos.listarTodosArticulos();
		listaCategorias.leerDatos();
		// listaCategorias.listarTodasCategorias();
		listaVentas.leerDatos();
		// listaVentas.listarTodasVentas();
		// Ahora ordenemos las ventas, se ordena por codigo de venta
		listaVentas.ordenarVentas();

	}

	public String getCod() {
		return cod;
	}

	public void setCod(String cod) {
		this.cod = cod;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	// NUEVO
	public void sumatoriaVentasTotal() {
		// recorrer la lista de ventas
		// en cada iteracion se necesita conocer el precio del articulo
		// por ahora el precio esta en articulos

		Articulo Art; // objeto que recuperaremos de acuerdo al codigo de art
		double cant; // cantidad de articulos en cada venta
		String codArt; // codigo del articulo que se vende
		double precioArt; // precio de cada articulo *
							// se calcula por ahora con el precio de compra
		String codVenta; // codigo de la venta
		double sumTotal = 0; // sumatoria de las ventas
		
		Calendar ahora = Calendar.getInstance();
        int hora = ahora.get(Calendar.HOUR_OF_DAY);
        int minuto = ahora.get(Calendar.MINUTE);
        int mes = ahora.get(Calendar.MONTH) + 1;
        int dia = ahora.get(Calendar.DAY_OF_MONTH);
        int an = ahora.get(Calendar.YEAR);
        
        System.out.println(hora+":"+minuto+" - "+dia+"/"+mes+"/"+an + ".");
        b.concatenar("Factura.txt", "\n"+
        "Supertienda MERCACENTRO\n" +
        "Cll. 16 # 15-22 B/ Central\n" +
        "tel: 4260979 - Cel: 3137311334"+
        "\nHora: "+hora+":"+minuto+" - Fecha: "+dia+"/"+mes+"/"+an+".");

		Iterator<Venta> iterVenta = listaVentas.LVenta.iterator();
		for (iterVenta = listaVentas.LVenta.iterator(); iterVenta.hasNext();) {
			// tomamos cada venta en aux_venta
			Venta aux_Venta = (Venta) iterVenta.next();
			// tomamos el codigo del articulo de la venta
			codArt = aux_Venta.getCodArticulo();
			codVenta = aux_Venta.getCod();
			// y traemos el articulo completo

			Art = listaArticulos.recuperarArticulo(codArt);
			cant = aux_Venta.getCantidad();
			precioArt = Art.getValor_compra();
			sumTotal += precioArt * cant;

			// System.out.println(codArt + " " + cant + " * " + precioArt + "="
			// + cant * precioArt);
			System.out.println(codVenta + " -->  " + cant + " * " + precioArt + " = "
					+ cant * precioArt);

			String stcant = String.valueOf(cant);
			String stprecioArt = String.valueOf(precioArt);
			String stcp = String.valueOf(cant * precioArt);
			b.concatenar("Factura.txt", "\n" + codVenta + " -->  " + stcant + " * "
					+ stprecioArt + " = " + stcp);

		}
		System.out.println("Total: " + sumTotal); // puede ser o crear una vble
													// de
		// instancia llamada ventasTotales
		// y almacenar ahi el valor

		String stsumTotal = String.valueOf(sumTotal);
		b.concatenar("Factura.txt", "\n" +"Total: "+ stsumTotal);

	}

	public void sumatoriaVentas() {

		// recorrer la lista de ventas
		// en cada iteracion se necesita conocer el precio del articulo
		// por ahora el precio esta en articulos

		Articulo Art; // objeto que recuperaremos de acuerdo al codigo de art
		int cant; // cantidad de articulos en cada venta
		String codArt; // codigo del articulo que se vende
		double precioArt; // precio de cada articulo *
							// se calcula por ahora con el precio de compra
		String codVenta; // codigo de la venta
		String codVAnt; // codigo anterior para ir mirando si es otro
		double sumTotal = 0; // sumatoria de todas las ventas
		double sumParcial = 0; // sumatoria para cada venta
		codVAnt = "";
		
		Calendar ahora = Calendar.getInstance();
        int hora = ahora.get(Calendar.HOUR_OF_DAY);
        int minuto = ahora.get(Calendar.MINUTE);
        int mes = ahora.get(Calendar.MONTH) + 1;
        int dia = ahora.get(Calendar.DAY_OF_MONTH);
        int an = ahora.get(Calendar.YEAR);
        
        System.out.println(hora+":"+minuto+" - "+dia+"/"+mes+"/"+an + ".");
        b.concatenar("SumVenta.txt", "\n" +
        		"Supertienda MERCACENTRO\n" +
                "Cll. 16 # 15-22 B/ Central\n" +
                "tel: 4260979 - Cel: 3137311334"+
        		"\nHora: " +hora+":"+minuto+" - Fecha: "+dia+"/"+mes+"/"+an+".");

		Iterator<Venta> iterVenta = listaVentas.LVenta.iterator();
		for (iterVenta = listaVentas.LVenta.iterator(); iterVenta.hasNext();) {
			// tomamos cada venta en aux_venta
			Venta aux_Venta = (Venta) iterVenta.next();
			// tomamos el codigo del articulo de la venta
			codArt = aux_Venta.getCodArticulo();
			codVenta = aux_Venta.getCod();

			Art = listaArticulos.recuperarArticulo(codArt);
			cant = aux_Venta.getCantidad();
			precioArt = Art.getValor_compra();
			sumTotal += precioArt * cant;

			// para la primera vez el codigo anterior es igual al primero
			if (codVAnt == "")
				codVAnt = codVenta;

			// vemos si el codigo de venta es igual al anterior ***

			if (codVenta.compareTo(codVAnt) == 0) {
				// es la misma venta

				sumParcial += precioArt * cant;

			} else {
				System.out.println("------------------------>" + sumParcial);
				String stsumParcial = String.valueOf(sumParcial);

				b.concatenar("SumVenta.txt", "\n" + "------------------------>"
						+ stsumParcial);

				sumParcial = 0;
				sumParcial += precioArt * cant;

			}

			codVAnt = codVenta;

			System.out.println(codVenta + " " + cant + " * " + precioArt + "="
					+ cant * precioArt);
			String stcant = String.valueOf(cant);
			String stprecioArt = String.valueOf(precioArt);
			String stcp = String.valueOf(cant * precioArt);
			b.concatenar("SumVenta.txt", "\n" + codVenta + " " + stcant + " * "
					+ stprecioArt + "=" + stcp);

		}

		System.out.println("------------------------>" + sumParcial);
		String stsumParcial = String.valueOf(sumParcial);

		b.concatenar("SumVenta.txt", "\n" + "------------------------>"
				+ stsumParcial);

		System.out.println(sumTotal); // puede ser o crear una vble de
		String stsumTotal = String.valueOf(sumTotal); // instancia llamada
														// ventasTotales
		b.concatenar("SumVenta.txt", "\n" +"Total: "+ stsumTotal); // y almacenar ahi el
														// valor

	}

}
